#ifndef CENTERWIDGETUI_H
#define CENTERWIDGETUI_H

#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <opencv2/opencv.hpp>

class CenterWidgetUI : public QWidget
{
Q_OBJECT
public:
    explicit CenterWidgetUI(QWidget *parent = nullptr);

    // 左侧面板
    QLabel *inputImageLabel;
    QPushButton *uploadBtn;
    QVBoxLayout *leftLayout;

    // 右侧面板
    QLabel *resultImageLabel;
    QPushButton *toggleBtn;
    QVBoxLayout *rightLayout;


    QPixmap originalInputPixmap;  // 上传的输入图片
    QPixmap processedResultPixmap;// 用于处理的中间过程图片
    QPixmap originalResultPixmap; // 处理结果图片

    QPushButton *cameraBtn;             // “打开摄像头”按钮指针，用于文本切换
    QTimer *timer = nullptr;            // 用于摄像头采集刷新左侧画面
    QTimer *rightTimer = nullptr;       // 用于右侧结果区摄像头画面刷新（可选）


    cv::VideoCapture cap;         // OpenCV摄像头采集对象
    bool cameraRunning = false;   // 标识摄像头状态（开/关）
    bool showingProcessedResult = false;  // 表示是否显示的是图像处理结果（而不是摄像头实时帧） 就是处理的是图片,不是摄像头

private:
    QHBoxLayout *mainLayout;


protected:
    // 重写窗口大小改变事件，用来缩放显示图像
    void resizeEvent(QResizeEvent *event) override;

public:
    //void toggleResultDisplay(); // 展示结果按钮的槽函数，控制显示/隐藏右侧结果图像区域
    void captureFrame();    // 定时器触发函数，从摄像头采集一帧图像，更新显示
    void toggleCamera();    // 打开/关闭摄像头按钮对应的槽函数
    void captureFrameRight();    // （可选）右侧结果区域显示摄像头画面时专用帧采集槽函数
    void onCameraButtonClicked();// 摄像头按钮对应的槽函数
    void toggleResultDisplay(); // 展示结果按钮的槽函数，控制显示/隐藏右侧结果图像区域


};

#endif // CENTERWIDGETUI_H
